{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1541,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import sklearn\n",
    "from sklearn import preprocessing\n",
    "from matplotlib import pyplot as plt\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.metrics import log_loss,roc_auc_score,accuracy_score,confusion_matrix\n",
    "import seaborn as sns \n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.ensemble import AdaBoostClassifier\n",
    "from itertools import cycle\n",
    "from sklearn import svm, datasets\n",
    "from sklearn.metrics import roc_curve, auc\n",
    "from sklearn.preprocessing import label_binarize\n",
    "from sklearn.multiclass import OneVsRestClassifier\n",
    "from scipy import interp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1542,
   "metadata": {},
   "outputs": [],
   "source": [
    "train1 = pd.read_csv('features.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1543,
   "metadata": {},
   "outputs": [],
   "source": [
    "le=preprocessing.LabelEncoder()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1544,
   "metadata": {},
   "outputs": [],
   "source": [
    "le.fit(train1['FinalGrade'])\n",
    "train1['FinalGrade']=le.transform(train1['FinalGrade'])\n",
    "y=train1['FinalGrade']\n",
    "# train1 = train1.drop(labels=['Regularity','Grade1','Grade2'],axis=1)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1545,
   "metadata": {},
   "outputs": [],
   "source": [
    "train1 = pd.get_dummies(train1)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1546,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age</th>\n",
       "      <th>Medu</th>\n",
       "      <th>Fedu</th>\n",
       "      <th>traveltime</th>\n",
       "      <th>studytime</th>\n",
       "      <th>failures</th>\n",
       "      <th>famrel</th>\n",
       "      <th>freetime</th>\n",
       "      <th>goout</th>\n",
       "      <th>Dalc</th>\n",
       "      <th>...</th>\n",
       "      <th>Grade1_Excellent</th>\n",
       "      <th>Grade1_Failure</th>\n",
       "      <th>Grade1_Good</th>\n",
       "      <th>Grade1_Poor</th>\n",
       "      <th>Grade1_Satisfactory</th>\n",
       "      <th>Grade2_Excellent</th>\n",
       "      <th>Grade2_Failure</th>\n",
       "      <th>Grade2_Good</th>\n",
       "      <th>Grade2_Poor</th>\n",
       "      <th>Grade2_Satisfactory</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>18</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>17</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>15</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>15</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>16</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>16</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>16</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>17</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>10 rows × 76 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   age  Medu  Fedu  traveltime  studytime  failures  famrel  freetime  goout  \\\n",
       "0   18     4     4           2          2         0       4         3      4   \n",
       "1   17     1     1           1          2         0       5         3      3   \n",
       "2   15     1     1           1          2         0       4         3      2   \n",
       "3   15     4     2           1          3         0       3         2      2   \n",
       "4   16     3     3           1          2         0       4         3      2   \n",
       "5   16     4     3           1          2         0       5         4      2   \n",
       "6   16     2     2           1          2         0       4         4      4   \n",
       "7   17     4     4           2          2         0       4         1      4   \n",
       "8   15     3     2           1          2         0       4         2      2   \n",
       "9   15     3     4           1          2         0       5         5      1   \n",
       "\n",
       "   Dalc         ...           Grade1_Excellent  Grade1_Failure  Grade1_Good  \\\n",
       "0     1         ...                          0               1            0   \n",
       "1     1         ...                          0               0            0   \n",
       "2     2         ...                          0               0            0   \n",
       "3     1         ...                          0               0            0   \n",
       "4     1         ...                          0               0            0   \n",
       "5     1         ...                          0               0            0   \n",
       "6     1         ...                          0               0            0   \n",
       "7     1         ...                          0               0            0   \n",
       "8     1         ...                          0               0            1   \n",
       "9     1         ...                          0               0            0   \n",
       "\n",
       "   Grade1_Poor  Grade1_Satisfactory  Grade2_Excellent  Grade2_Failure  \\\n",
       "0            0                    0                 0               0   \n",
       "1            1                    0                 0               0   \n",
       "2            0                    1                 0               0   \n",
       "3            0                    1                 0               0   \n",
       "4            0                    1                 0               0   \n",
       "5            0                    1                 0               0   \n",
       "6            0                    1                 0               0   \n",
       "7            1                    0                 0               0   \n",
       "8            0                    0                 0               0   \n",
       "9            0                    1                 0               0   \n",
       "\n",
       "   Grade2_Good  Grade2_Poor  Grade2_Satisfactory  \n",
       "0            0            0                    1  \n",
       "1            0            0                    1  \n",
       "2            0            0                    1  \n",
       "3            0            0                    1  \n",
       "4            0            0                    1  \n",
       "5            0            0                    1  \n",
       "6            0            0                    1  \n",
       "7            0            0                    1  \n",
       "8            1            0                    0  \n",
       "9            0            0                    1  \n",
       "\n",
       "[10 rows x 76 columns]"
      ]
     },
     "execution_count": 1546,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train1.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 1547,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age</th>\n",
       "      <th>Medu</th>\n",
       "      <th>Fedu</th>\n",
       "      <th>traveltime</th>\n",
       "      <th>studytime</th>\n",
       "      <th>failures</th>\n",
       "      <th>famrel</th>\n",
       "      <th>freetime</th>\n",
       "      <th>goout</th>\n",
       "      <th>Dalc</th>\n",
       "      <th>...</th>\n",
       "      <th>Grade1_Excellent</th>\n",
       "      <th>Grade1_Failure</th>\n",
       "      <th>Grade1_Good</th>\n",
       "      <th>Grade1_Poor</th>\n",
       "      <th>Grade1_Satisfactory</th>\n",
       "      <th>Grade2_Excellent</th>\n",
       "      <th>Grade2_Failure</th>\n",
       "      <th>Grade2_Good</th>\n",
       "      <th>Grade2_Poor</th>\n",
       "      <th>Grade2_Satisfactory</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>18</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>17</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>15</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>15</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>16</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 74 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   age  Medu  Fedu  traveltime  studytime  failures  famrel  freetime  goout  \\\n",
       "0   18     4     4           2          2         0       4         3      4   \n",
       "1   17     1     1           1          2         0       5         3      3   \n",
       "2   15     1     1           1          2         0       4         3      2   \n",
       "3   15     4     2           1          3         0       3         2      2   \n",
       "4   16     3     3           1          2         0       4         3      2   \n",
       "\n",
       "   Dalc         ...           Grade1_Excellent  Grade1_Failure  Grade1_Good  \\\n",
       "0     1         ...                          0               1            0   \n",
       "1     1         ...                          0               0            0   \n",
       "2     2         ...                          0               0            0   \n",
       "3     1         ...                          0               0            0   \n",
       "4     1         ...                          0               0            0   \n",
       "\n",
       "   Grade1_Poor  Grade1_Satisfactory  Grade2_Excellent  Grade2_Failure  \\\n",
       "0            0                    0                 0               0   \n",
       "1            1                    0                 0               0   \n",
       "2            0                    1                 0               0   \n",
       "3            0                    1                 0               0   \n",
       "4            0                    1                 0               0   \n",
       "\n",
       "   Grade2_Good  Grade2_Poor  Grade2_Satisfactory  \n",
       "0            0            0                    1  \n",
       "1            0            0                    1  \n",
       "2            0            0                    1  \n",
       "3            0            0                    1  \n",
       "4            0            0                    1  \n",
       "\n",
       "[5 rows x 74 columns]"
      ]
     },
     "execution_count": 1547,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# y=train1.FinalGrade\n",
    "train1 = train1.drop(labels=['G3','FinalGrade'],axis=1)\n",
    "train1.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1548,
   "metadata": {},
   "outputs": [],
   "source": [
    "                                ###  SPLIT DATA ###"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1549,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(730, 74)\n",
      "(730,)\n",
      "(314, 74)\n",
      "(314,)\n"
     ]
    }
   ],
   "source": [
    "x_train,x_val,y_train,y_val = train_test_split(train1,y,random_state=0,test_size=0.3)\n",
    "print(x_train.shape)\n",
    "print(y_train.shape)\n",
    "print(x_val.shape)\n",
    "print(y_val.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1550,
   "metadata": {},
   "outputs": [],
   "source": [
    "def confusionmatrix(y_val,y_pred):\n",
    "    #labels = list(range(0,21))\n",
    "    cm=confusion_matrix(y_val,y_pred)\n",
    "    a4_dims = (11.7, 8.27)\n",
    "    fig, ax = plt.subplots(figsize=a4_dims)\n",
    "    ax= plt.subplot()\n",
    "    sns.heatmap(cm, annot=True, ax = ax); #annot=True to annotate cells\n",
    "    # labels, title and ticks\n",
    "    ax.set_xlabel('Predicted labels');ax.set_ylabel('True labels'); \n",
    "    ax.set_title('Confusion Matrix'); \n",
    "    ax.xaxis.set_ticklabels(labels); ax.yaxis.set_ticklabels(labels);\n",
    "    FP = cm.sum(axis=0) - np.diag(cm)  \n",
    "    FN = cm.sum(axis=1) - np.diag(cm)\n",
    "    TP = np.diag(cm)\n",
    "    TN = cm.sum() - (FP + FN + TP)\n",
    "\n",
    "    total = lambda x : x.sum()/5\n",
    "    # Sensitivity, hit rate, recall, or true positive rate\n",
    "    TPR = TP/(TP+FN)\n",
    "    print('percentage of sensitivity = '+str(total(TPR)*100))\n",
    "\n",
    "    # Specificity or true negative rate\n",
    "    TNR = TN/(TN+FP) \n",
    "\n",
    "    # Precision or positive predictive value\n",
    "    PPV = TP/(TP+FP)\n",
    "    print('percentage of precision = '+str(total(PPV)*100))\n",
    "    # Negative predictive value\n",
    "    NPV = TN/(TN+FN)\n",
    "\n",
    "    # Fall out or false positive rate\n",
    "    FPR = FP/(FP+TN)\n",
    "\n",
    "    # False negative rate\n",
    "    FNR = FN/(TP+FN)\n",
    "\n",
    "    # False discovery rate\n",
    "    FDR = FP/(TP+FP)\n",
    "\n",
    "    # Overall accuracy\n",
    "    ACC = (TP+TN)/(TP+FP+FN+TN)\n",
    "    print('Accuracy percentage = '+str(total(ACC)*100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1551,
   "metadata": {},
   "outputs": [],
   "source": [
    "                        ###  LOGISTIC REGRESSION  ###"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1552,
   "metadata": {},
   "outputs": [],
   "source": [
    "def logistic_regression(x_train,y_train,x_val,y_val):\n",
    "    lr =  LogisticRegression()\n",
    "    lr.fit(x_train,y_train)\n",
    "    y_pred = lr.predict(x_val)\n",
    "    y_predict = lr.predict_proba(x_val)\n",
    "    print(\"Log_Loss: \",log_loss(y_val,y_predict))\n",
    "    print(\"Accuracy_Score: \",accuracy_score(y_val,y_pred))\n",
    "    confusionmatrix(y_val,y_pred)\n",
    "    return y_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1553,
   "metadata": {},
   "outputs": [],
   "source": [
    "                        ###   RANDOM FOREST   ###"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1554,
   "metadata": {},
   "outputs": [],
   "source": [
    "def random_forest(x_train,y_train,x_val,y_val):\n",
    "    random_forest = RandomForestClassifier(n_estimators=36,min_samples_leaf=2,random_state=0)\n",
    "\n",
    "    f = random_forest.fit(x_train, y_train)\n",
    "    print(\"Random Forest Model Score\" , \":\" , f.score(x_train, y_train) , \",\" ,\n",
    "              \"Cross Validation Score\" ,\":\" , f.score(x_val, y_val))\n",
    "    Y_pred = random_forest.predict_proba(x_val)\n",
    "    Y_pred1 = random_forest.predict(x_val)\n",
    "    print(\"Log_Loss: \",log_loss(y_val,Y_pred))\n",
    "    confusionmatrix(y_val,Y_pred1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1555,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/srujan/anaconda3/lib/python3.6/site-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
      "  FutureWarning)\n",
      "/home/srujan/anaconda3/lib/python3.6/site-packages/sklearn/linear_model/logistic.py:459: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
      "  \"this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Log_Loss:  0.5170541078971933\n",
      "Accuracy_Score:  0.8184713375796179\n",
      "percentage of sensitivity = 69.78353078835747\n",
      "percentage of precision = 79.07020925461185\n",
      "Accuracy percentage = 92.73885350318471\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 842.4x595.44 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_score =logistic_regression(x_train,y_train,x_val,y_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1556,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Random Forest Model Score : 0.9506849315068493 , Cross Validation Score : 0.821656050955414\n",
      "Log_Loss:  0.4972328694809772\n",
      "percentage of sensitivity = 74.78949100482669\n",
      "percentage of precision = 80.97664747029538\n",
      "Accuracy percentage = 92.86624203821657\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 842.4x595.44 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "random_forest(x_train,y_train,x_val,y_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1557,
   "metadata": {},
   "outputs": [],
   "source": [
    "def SVM_Model(X_train,Y_train,X_test,y_val):\n",
    "    svc = SVC()\n",
    "    svc.fit(X_train, Y_train)\n",
    "    Y_pred = svc.predict(X_test)\n",
    "#     y_predict = svc.predict_proba(X_test)\n",
    "#   print(\"Accuracy_train: \",accuracy_score(y_val,y_predict))\n",
    "#   print(\"Accuracy_val: \",accuracy_score(y_val,y_predict))\n",
    "    print(\"SVC Model Score\" , \":\" , svc.score(X_train, y_train) , \",\" ,\n",
    "      \"Cross Validation Score\" ,\":\" , svc.score(X_test, y_val))\n",
    "#     print(\"Log_Loss: \",log_loss(y_val,y_predict))\n",
    "    confusionmatrix(y_val,y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1558,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/srujan/anaconda3/lib/python3.6/site-packages/sklearn/svm/base.py:196: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SVC Model Score : 0.8904109589041096 , Cross Validation Score : 0.8343949044585988\n",
      "percentage of sensitivity = 69.78353078835747\n",
      "percentage of precision = 79.07020925461185\n",
      "Accuracy percentage = 92.73885350318471\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 842.4x595.44 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "SVM_Model(x_train,y_train,x_val,y_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1559,
   "metadata": {},
   "outputs": [],
   "source": [
    "def Decison_tree_Model(x_train,y_train,x_val,y_val):\n",
    "    tree = DecisionTreeClassifier(min_samples_leaf=17)\n",
    "    t= tree.fit(x_train, y_train)\n",
    "    y_pred = t.predict(x_val)\n",
    "    y_predict = t.predict_proba(x_val)\n",
    "    print(\"Log_Loss: \",log_loss(y_val,y_predict))\n",
    "    print(\"Decisioin Tree Model Score\" , \":\" , t.score(x_train, y_train) , \",\" , \n",
    "          \"Cross Validation Score\" ,\":\" , t.score(x_val, y_val))\n",
    "    confusionmatrix(y_val,y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1560,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Log_Loss:  1.7825010124727543\n",
      "Decisioin Tree Model Score : 0.8506849315068493 , Cross Validation Score : 0.8057324840764332\n",
      "percentage of sensitivity = 72.99133391838527\n",
      "percentage of precision = 78.22272347535504\n",
      "Accuracy percentage = 92.22929936305732\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 842.4x595.44 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "Decison_tree_Model(x_train,y_train,x_val,y_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1561,
   "metadata": {},
   "outputs": [],
   "source": [
    "def ada_boost_model(x_train,y_train,x_val,y_val):\n",
    "    ada = AdaBoostClassifier(n_estimators=2)\n",
    "    af = ada.fit(x_train, y_train)\n",
    "    y_pred = af.predict(x_val)\n",
    "    y_predict = af.predict_proba(x_val)\n",
    "    print(\"Ada Boost Model Score\" , \":\" , af.score(x_train, y_train) , \",\" ,\n",
    "          \"Cross Validation Score\" ,\":\" , af.score(x_val, y_val))\n",
    "    print(\"Log_Loss: \",log_loss(y_val,y_predict))\n",
    "    confusionmatrix(y_val,y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1562,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Ada Boost Model Score : 0.7684931506849315 , Cross Validation Score : 0.7866242038216561\n",
      "Log_Loss:  0.6781340590102064\n",
      "percentage of sensitivity = 53.118326751499204\n",
      "percentage of precision = nan\n",
      "Accuracy percentage = 91.46496815286625\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/srujan/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:26: RuntimeWarning: invalid value encountered in true_divide\n",
      "/home/srujan/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:38: RuntimeWarning: invalid value encountered in true_divide\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 842.4x595.44 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ada_boost_model(x_train,y_train,x_val,y_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1563,
   "metadata": {},
   "outputs": [],
   "source": [
    "def ROC_plot(y_score):\n",
    "    train = pd.read_csv('features.csv')\n",
    "    train.head()\n",
    "    y=train[['FinalGrade']]\n",
    "    train = train.drop(['G3'],axis=1);\n",
    "    train = train.drop(['FinalGrade'],axis=1);\n",
    "    train = train.drop(['G2'],axis=1);\n",
    "    train = train.drop(['G1'],axis=1);\n",
    "    y = label_binarize(y, classes=['Failure','Poor','Satisfactory','Good','Excellent'])\n",
    "    n_classes = y.shape[1]\n",
    "    \n",
    "    X_train, X_test, y_train, y_test = train_test_split(train,y,random_state=0)\n",
    "    \n",
    "    fpr = dict()\n",
    "    tpr = dict()\n",
    "    roc_auc = dict()\n",
    "    for i in range(n_classes):\n",
    "        fpr[i], tpr[i], _ = roc_curve(y_test[:,i], y_score[:,i])\n",
    "        roc_auc[i] = auc(fpr[i], tpr[i])\n",
    "\n",
    "    # Compute micro-average ROC curve and ROC area\n",
    "    fpr[\"micro\"], tpr[\"micro\"], _ = roc_curve(y_test.ravel(), y_score.ravel())\n",
    "    roc_auc[\"micro\"] = auc(fpr[\"micro\"], tpr[\"micro\"])\n",
    "    \n",
    "    \n",
    "    # Individual ROC\n",
    "    plt.figure()\n",
    "    lw = 2\n",
    "    for i in (0,1):\n",
    "        plt.subplot(1,2,i+1)\n",
    "        plt.plot(fpr[i], tpr[i], color='darkorange',\n",
    "             lw=lw, label='ROC curve (area = %0.2f)' % roc_auc[i])\n",
    "        plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')\n",
    "        plt.xlim([0.0, 1.0])\n",
    "        plt.ylim([0.0, 1.05])\n",
    "        plt.xlabel('False Positive Rate')\n",
    "        plt.ylabel('True Positive Rate')\n",
    "        plt.title('Receiver operating characteristic label'+str(i))\n",
    "        plt.legend(loc=\"lower right\")\n",
    "\n",
    "    plt.plot()\n",
    "\n",
    "    plt.figure()\n",
    "    lw = 2\n",
    "    for i in (2,3):\n",
    "        plt.subplot(1,2,i-1)\n",
    "        plt.plot(fpr[i], tpr[i], color='red',\n",
    "             lw=lw, label='ROC curve (area = %0.2f)' % roc_auc[i])\n",
    "        plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')\n",
    "        plt.xlim([0.0, 1.0])\n",
    "        plt.ylim([0.0, 1.05])\n",
    "        plt.xlabel('False Positive Rate')\n",
    "        plt.ylabel('True Positive Rate')\n",
    "        plt.title('Receiver operating characteristic label'+str(i))\n",
    "        plt.legend(loc=\"lower right\")\n",
    "\n",
    "    plt.plot()\n",
    "\n",
    "    plt.figure()\n",
    "    lw = 2\n",
    "    plt.subplot(1,2,1)\n",
    "    plt.plot(fpr[4], tpr[4], color='grey',\n",
    "         lw=lw, label='ROC curve (area = %0.2f)' % roc_auc[4])\n",
    "    plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')\n",
    "    plt.xlim([0.0, 1.0])\n",
    "    plt.ylim([0.0, 1.05])\n",
    "    plt.xlabel('False Positive Rate')\n",
    "    plt.ylabel('True Positive Rate')\n",
    "    plt.title('Receiver operating characteristic label'+str(4))\n",
    "    plt.legend(loc=\"lower right\")\n",
    "    plt.plot()\n",
    "    \n",
    "    \n",
    "    # Combined ROC\n",
    "    \n",
    "    # Compute macro-average ROC curve and ROC area\n",
    "\n",
    "    # First aggregate all false positive rates\n",
    "    all_fpr = np.unique(np.concatenate([fpr[i] for i in range(n_classes)]))\n",
    "\n",
    "    # Then interpolate all ROC curves at this points\n",
    "    mean_tpr = np.zeros_like(all_fpr)\n",
    "    for i in range(n_classes):\n",
    "        mean_tpr += interp(all_fpr, fpr[i], tpr[i])\n",
    "\n",
    "    # Finally average it and compute AUC\n",
    "    mean_tpr /= n_classes\n",
    "\n",
    "    fpr[\"macro\"] = all_fpr\n",
    "    tpr[\"macro\"] = mean_tpr\n",
    "    roc_auc[\"macro\"] = auc(fpr[\"macro\"], tpr[\"macro\"])\n",
    "\n",
    "    # Plot all ROC curves\n",
    "    plt.figure()\n",
    "    plt.plot(fpr[\"micro\"], tpr[\"micro\"],\n",
    "             label='micro-average ROC curve (area = {0:0.2f})'\n",
    "                   ''.format(roc_auc[\"micro\"]),\n",
    "             color='deeppink', linestyle=':', linewidth=4)\n",
    "\n",
    "    plt.plot(fpr[\"macro\"], tpr[\"macro\"],\n",
    "             label='macro-average ROC curve (area = {0:0.2f})'\n",
    "                   ''.format(roc_auc[\"macro\"]),\n",
    "             color='navy', linestyle=':', linewidth=4)\n",
    "\n",
    "    for i in range(n_classes):\n",
    "        plt.plot(fpr[i], tpr[i], lw=2,\n",
    "                 label='ROC curve of class {0} (area = {1:0.2f})'\n",
    "                 ''.format(i, roc_auc[i]))\n",
    "        print('Area Under the Curve with label '+str(i)+' is '+str(roc_auc[i]))\n",
    "\n",
    "    plt.plot([0, 1], [0, 1], 'k--', lw=2)\n",
    "    plt.xlim([0.0, 1.0])\n",
    "    plt.ylim([0.0, 1.05])\n",
    "    plt.xlabel('False Positive Rate')\n",
    "    plt.ylabel('True Positive Rate')\n",
    "    plt.title('Some extension of Receiver operating characteristic to multi-class')\n",
    "    plt.legend(loc=\"lower right\")\n",
    "    plt.rcParams[\"figure.figsize\"] = (10,6)\n",
    "    \n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1564,
   "metadata": {},
   "outputs": [
    {
     "ename": "IndexError",
     "evalue": "too many indices for array",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mIndexError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-1564-4d7f1c5a9724>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mROC_plot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_score\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-1563-72bc91b9afc0>\u001b[0m in \u001b[0;36mROC_plot\u001b[0;34m(y_score)\u001b[0m\n\u001b[1;32m     16\u001b[0m     \u001b[0mroc_auc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     17\u001b[0m     \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn_classes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m         \u001b[0mfpr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtpr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mroc_curve\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_score\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     19\u001b[0m         \u001b[0mroc_auc\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mauc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfpr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtpr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     20\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mIndexError\u001b[0m: too many indices for array"
     ]
    }
   ],
   "source": [
    "ROC_plot(y_score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
